Loggest thine Stuff
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

94 lines
3.3 KiB

<script lang="ts" context="module">
import type { Load } from "@sveltejs/kit/types/internal";
import { sl3 } from "$lib/clients/sl3";
import parseInterval, { datesOf } from "$lib/utils/timeinterval";
import type Item from "$lib/models/item";
import type { ItemFilter, ItemGroup } from "$lib/models/item";
export const load: Load = async({ fetch, params, session, stuff }) => {
const scopeId = parseInt(params.scope.split("-")[0]);
const interval = parseInterval(params.interval, new Date());
const filter = {
createdTime: interval,
acquiredTime: interval,
scheduledDate: datesOf(interval),
};
const {items, groups} = await sl3(fetch, stuff.idToken).listItems(scopeId, filter, true, session.groupOptions);
return {
stuff: { title: "History" },
props: {
items, groups, filter,
intervalString: params.interval,
},
};
}
</script>
<script lang="ts">
import { goto } from "$app/navigation";
import { session } from "$app/stores";
import { browser } from "$app/env";
import Main from "$lib/components/layout/Main.svelte";
import { getScopeContext } from "$lib/components/contexts/ScopeContext.svelte";
import DeletionModal from "$lib/modals/DeletionModal.svelte";
import ItemAcquireModal from "$lib/modals/ItemAcquireModal.svelte";
import ItemCreateModal from "$lib/modals/ItemCreateModal.svelte";
import HistorySelector from "$lib/components/common/HistorySelector.svelte";
import ItemListContext from "$lib/components/contexts/ItemListContext.svelte";
import HistoryGroupList from "$lib/components/history/HistoryGroupList.svelte";
import ToggleIcon from "$lib/components/history/ToggleIcon.svelte";
export let intervalString: string
export let items: Item[]
export let groups: ItemGroup[]
export let filter: ItemFilter;
const {lastHistoryRange} = getScopeContext();
function changeInterval(e: Event) {
const target = e.target as HTMLSelectElement;
lastHistoryRange.set(target.value);
goto(`./${target.value}`, {replaceState: true});
}
function triggerReload() {
goto(`./${intervalString}`, {replaceState: true});
}
$: {
if (browser) {
if ($session.groupOptions == null) {
try {
$session.groupOptions = JSON.parse(localStorage.getItem("sl3.history.group_options")||"{}");
triggerReload();
} catch(_) {
$session.groupOptions = {};
}
} else {
localStorage.setItem("sl3.history.group_options", JSON.stringify($session.groupOptions));
}
}
}
</script>
<ItemListContext filter={filter} groups={groups} items={items}>
<Main big>
<HistorySelector value={intervalString} on:change={changeInterval} >
{#if $session.groupOptions != null}
<ToggleIcon inverse name="lightbulb" bind:value={$session.groupOptions.hideCreated} on:click={triggerReload} />
<ToggleIcon inverse name="check_slot" bind:value={$session.groupOptions.hideAcquired} on:click={triggerReload} />
<ToggleIcon inverse name="calendar" bind:value={$session.groupOptions.hideScheduled} on:click={triggerReload} />
{/if}
</HistorySelector>
<HistoryGroupList intervalString={intervalString} />
</Main>
<ItemCreateModal />
<ItemAcquireModal />
<DeletionModal />
</ItemListContext>